———————————————————————————————-

Loading our Libraries

library(tidyverse)
library(here)
library(tidytuesdayR)
library(lubridate)

To Download moveVis : install.packages(“moveVis”)

# install.packages("moveVis")
library(moveVis)

Loading our Sample data

To demostrate the abilities of this package, we will use Pet Cats UK dataset from TidyTuesday

Will use the “cats_uk” dataset

tuesdata <- tidytuesdayR::tt_load(2023, week = 5)
## 
##  Downloading file 1 of 2: `cats_uk.csv`
##  Downloading file 2 of 2: `cats_uk_reference.csv`
cats_uk <- as.data.frame(tuesdata$cats_uk) 

Data Requirement

glimpse(cats_uk)
## Rows: 18,215
## Columns: 11
## $ tag_id                   <chr> "Ares", "Ares", "Ares", "Ares", "Ares", "Ares…
## $ event_id                 <dbl> 3395610551, 3395610552, 3395610553, 339561055…
## $ visible                  <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRU…
## $ timestamp                <dttm> 2017-06-24 01:03:57, 2017-06-24 01:11:20, 20…
## $ location_long            <dbl> -5.113851, -5.113851, -5.113730, -5.113774, -…
## $ location_lat             <dbl> 50.17032, 50.17032, 50.16988, 50.16983, 50.17…
## $ ground_speed             <dbl> 684, 936, 2340, 0, 4896, 504, 108, 504, 252, …
## $ height_above_ellipsoid   <dbl> 154.67, 154.67, 81.35, 67.82, 118.03, 123.07,…
## $ algorithm_marked_outlier <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
## $ manually_marked_outlier  <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
## $ study_name               <chr> "Pet Cats United Kingdom", "Pet Cats United K…

Preparing Movement Tracks

Cleaning the data

  • Needs to be a times data

  • Cannot have duplicated time stamp

cats_uk <- cats_uk%>% 
  mutate( timestamp = ymd_hms(timestamp)) %>%
  filter(tag_id %in% c("Athena","Ares", "Lola")) #simplify dataset to managable practice set

If there is duplicated timestamp, needs to be removed

cats_uk <- cats_uk[!duplicated(cats_uk$timestamp),]

Use a object called Move or moveStack

First have to convert a data.frame to move or moveStack using df2move()

Our required compnents of the data will be specified here

cat <- df2move(cats_uk,  #df
        proj = "+init=epsg:4326 +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0",  #type of projection
        x = "location_long",  #what are your x coord
        y = "location_lat",
        time = "timestamp", #what are the time, needs to be POSIXct
        track_id = "tag_id"
)

glimpse(cat)
## Formal class 'MoveStack' [package "move"] with 17 slots
##   ..@ trackId                : Factor w/ 3 levels "Ares","Athena",..: 1 1 1 1 1 1 1 1 1 1 ...
##   ..@ timestamps             : POSIXct[1:432], format: "2017-06-24 01:03:57" "2017-06-24 01:11:20" ...
##   ..@ idData                 :'data.frame':  3 obs. of  0 variables
##   ..@ sensor                 : Factor w/ 1 level "unknown": 1 1 1 1 1 1 1 1 1 1 ...
##   ..@ data                   :'data.frame':  432 obs. of  3 variables:
##   .. ..$ x   : num [1:432] -5.11 -5.11 -5.11 -5.11 -5.11 ...
##   .. ..$ y   : num [1:432] 50.2 50.2 50.2 50.2 50.2 ...
##   .. ..$ time: POSIXct[1:432], format: "2017-06-24 01:03:57" "2017-06-24 01:11:20" ...
##   ..@ coords.nrs             : num(0) 
##   ..@ coords                 : num [1:432, 1:2] -5.11 -5.11 -5.11 -5.11 -5.11 ...
##   .. ..- attr(*, "dimnames")=List of 2
##   ..@ bbox                   : num [1:2, 1:2] -5.12 50.14 -5.07 50.17
##   .. ..- attr(*, "dimnames")=List of 2
##   ..@ proj4string            :Formal class 'CRS' [package "sp"] with 1 slot
##   ..@ trackIdUnUsedRecords   : Factor w/ 3 levels "Ares","Athena",..: 
##   ..@ timestampsUnUsedRecords: NULL
##   ..@ sensorUnUsedRecords    : Factor w/ 1 level "unknown": 
##   ..@ dataUnUsedRecords      :'data.frame':  0 obs. of  0 variables
##   ..@ dateCreation           : POSIXct[1:1], format: "2023-03-25 21:21:29"
##   ..@ study                  : chr(0) 
##   ..@ citation               : chr(0) 
##   ..@ license                : chr(0)

Align time resolution

To be able to convert data into frames, it needs to be consistent time intervals

m <- align_move(cat, 
                res = 10, #specify resolution
                unit = "mins") #resolution unit

glimpse(m)
## Formal class 'MoveStack' [package "move"] with 17 slots
##   ..@ trackId                : Factor w/ 3 levels "Ares","Athena",..: 1 1 1 1 1 1 1 1 1 1 ...
##   ..@ timestamps             : POSIXct[1:2903], format: "2017-06-24 01:10:13" "2017-06-24 01:20:13" ...
##   .. ..- attr(*, "names")="Ares1" "Ares2" ...
##   ..@ idData                 :'data.frame':  3 obs. of  0 variables
##   ..@ sensor                 : Factor w/ 2 levels "unknown","interpolateTime": 2 2 2 2 2 2 2 2 2 2 ...
##   .. ..- attr(*, "names")= chr [1:2903] "Ares1" "Ares2" "Ares3" "Ares4" ...
##   ..@ data                   :'data.frame':  2903 obs. of  3 variables:
##   .. ..$ x   : num [1:2903] -5.11 -5.11 -5.11 -5.11 -5.11 ...
##   .. ..$ y   : num [1:2903] 50.2 50.2 50.2 50.2 50.2 ...
##   .. ..$ time: POSIXct[1:2903], format: "2017-06-24 01:10:13" "2017-06-24 01:20:13" ...
##   ..@ coords.nrs             : num(0) 
##   ..@ coords                 : num [1:2903, 1:2] -5.11 -5.11 -5.11 -5.11 -5.11 ...
##   .. ..- attr(*, "dimnames")=List of 2
##   ..@ bbox                   : num [1:2, 1:2] -5.12 50.14 -5.07 50.17
##   .. ..- attr(*, "dimnames")=List of 2
##   ..@ proj4string            :Formal class 'CRS' [package "sp"] with 1 slot
##   ..@ trackIdUnUsedRecords   : Factor w/ 3 levels "Ares","Athena",..: 
##   ..@ timestampsUnUsedRecords: NULL
##   ..@ sensorUnUsedRecords    : Factor w/ 2 levels "unknown","interpolateTime": 
##   ..@ dataUnUsedRecords      :'data.frame':  0 obs. of  0 variables
##   ..@ dateCreation           : POSIXct[1:1], format: "2023-03-25 21:21:29"
##   ..@ study                  : chr(0) 
##   ..@ citation               : chr(0) 
##   ..@ license                : chr(0)

———————————————————————————————-

Analyze Data

library(move)

You can use get_maptypes() get a list of all available map_services and map_types

get_maptypes()
## $osm
##  [1] "streets"      "streets_de"   "streets_fr"   "humanitarian" "topographic" 
##  [6] "roads"        "hydda"        "hydda_base"   "hike"         "grayscale"   
## [11] "no_labels"    "watercolor"   "toner"        "toner_bg"     "toner_lite"  
## [16] "terrain"      "terrain_bg"   "mtb"         
## 
## $carto
##  [1] "light"                "light_no_labels"      "light_only_labels"   
##  [4] "dark"                 "dark_no_labels"       "dark_only_labels"    
##  [7] "voyager"              "voyager_no_labels"    "voyager_only_labels" 
## [10] "voyager_labels_under"
## 
## $mapbox
##  [1] "satellite"     "streets"       "streets_basic" "hybrid"       
##  [5] "light"         "dark"          "high_contrast" "outdoors"     
##  [9] "hike"          "wheatpaste"    "pencil"        "comic"        
## [13] "pirates"       "emerald"

Creating spatial frames

frames <- frames_spatial(
  m = m, # input data
  trace_show = TRUE, # show trace of complete path
  equidistant = FALSE, # make map square (FALSE = prevent stretching of map)
  map_service = "osm", # select map service
  map_type = "streets", # select map type
  alpha = 0.75, # select transparency level for map
  path_colours = c("#D55E00", "#009E73", "#56B4E9"), # select colors for paths
  ext = extent(-5.12, -5.065, 50.14, 50.175), # define a custom extent for map
  map_res = 0.8, # select map resolution
  )
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 39.84s at 25 fps for 996 frames
## Retrieving and compositing basemap imagery...
## Assigning raster maps to frames...
## Creating frames...

You can use length() to check the number of frames

length(frames)
## [1] 996

You can use frames[[]] to view a single frame at a time

frames[[100]]

# Adapting spatial frames

You can use add_labels() to add labels to frames

frames <- add_labels(frames, x = "Longitude", y = "Latitude") # add axis labels

frames[[100]]

You can use add_timestamps() to show timestamps on frames

frames <- add_timestamps(frames, type = "label")

frames[[100]]

You can use add_progress() to add a progress bar to frames

frames <- add_progress(frames, colour = "red")

frames[[100]]

You can use add_northarrow() to add a north arrow to frames

frames <- add_northarrow(frames, colour = "black", height = 0.08, position = "bottomleft")

frames[[100]]

You can use add_scalebar() to add a scalebar to frames

frames <- add_scalebar(frames, colour = "black", position = "bottomright", height = 0.022, label_margin = 1.4, distance = 1)

frames[[100]]

You can include additional visual features in frames

# Make data.frame() with coordinates for vertices of a polygon
data <- data.frame(x = c(-5.11, -5.10, -5.10, -5.11, -5.11),
                   y = c(50.160, 50.160, 50.165, 50.165, 50.160))

# You can customize individual frames with geom_path()
modified_frame <- frames[[100]] + geom_path(aes(x = x, y = y), data = data, colour = "red", linetype = "dashed")

modified_frame

You can use add_gg() to customize all of the frames at once

frames <- add_gg(frames, gg = expr(geom_path(aes(x = x, y = y), data = data, color = "red", linetype = "dashed")), data = data)

frames[[100]]

You can also use add_gg() to add dynamic/animated features to frames

# create data.frame containing coordinates for polygon vertices
data <- data.frame(x = c(-5.08, -5.09, -5.09, -5.08, -5.08),
                   y = c(50.150, 50.150, 50.155, 50.155, 50.150))

# make a list from the data.frame by replicating it by the length of frames
data <- rep(list(data), length.out = length(frames))

# alter the coordinates to make them shift
data <- lapply(data, function(x){
  y <- rnorm(nrow(x)-1, mean = 0.00001, sd = 0.0001) 
  x + c(y, y[1])
})

# draw each individual polygon to each frame
frames <- add_gg(frames, gg = expr(geom_path(aes(x = x, y = y), data = data, colour = "black")), data = data)

frames[[100]]

You can use add_text() to add text labels to frames

# add a text label for the static polygon
frames <- add_text(
  frames,
  "Static feature",
  x = -5.105,
  y = 50.159,
  colour = "black",
  size = 3
  )

# add a text label for the dynamic polygon
frames <- add_text(
  frames,
  "Dynamic feature",
  x = -5.085,
  y = 50.149,
  colour = "black",
  size = 3
  )

frames[[100]]

You can use get_frametimes() to get a vector of timestamps for frames

frames.ts <- get_frametimes(frames)
print(frames.ts)
##   [1] "2017-06-24 01:10:13 UTC" "2017-06-24 01:20:13 UTC"
##   [3] "2017-06-24 01:30:13 UTC" "2017-06-24 01:40:13 UTC"
##   [5] "2017-06-24 01:50:13 UTC" "2017-06-24 02:00:13 UTC"
##   [7] "2017-06-24 02:10:13 UTC" "2017-06-24 02:20:13 UTC"
##   [9] "2017-06-24 02:30:13 UTC" "2017-06-24 02:40:13 UTC"
##  [11] "2017-06-24 02:50:13 UTC" "2017-06-24 03:00:13 UTC"
##  [13] "2017-06-24 03:10:13 UTC" "2017-06-24 03:20:13 UTC"
##  [15] "2017-06-24 03:30:13 UTC" "2017-06-24 03:40:13 UTC"
##  [17] "2017-06-24 03:50:13 UTC" "2017-06-24 04:00:13 UTC"
##  [19] "2017-06-24 04:10:13 UTC" "2017-06-24 04:20:13 UTC"
##  [21] "2017-06-24 04:30:13 UTC" "2017-06-24 04:40:13 UTC"
##  [23] "2017-06-24 04:50:13 UTC" "2017-06-24 05:00:13 UTC"
##  [25] "2017-06-24 05:10:13 UTC" "2017-06-24 05:20:13 UTC"
##  [27] "2017-06-24 05:30:13 UTC" "2017-06-24 05:40:13 UTC"
##  [29] "2017-06-24 05:50:13 UTC" "2017-06-24 06:00:13 UTC"
##  [31] "2017-06-24 06:10:13 UTC" "2017-06-24 06:20:13 UTC"
##  [33] "2017-06-24 06:30:13 UTC" "2017-06-24 06:40:13 UTC"
##  [35] "2017-06-24 06:50:13 UTC" "2017-06-24 07:00:13 UTC"
##  [37] "2017-06-24 07:10:13 UTC" "2017-06-24 07:20:13 UTC"
##  [39] "2017-06-24 07:30:13 UTC" "2017-06-24 07:40:13 UTC"
##  [41] "2017-06-24 07:50:13 UTC" "2017-06-24 08:00:13 UTC"
##  [43] "2017-06-24 08:10:13 UTC" "2017-06-24 08:20:13 UTC"
##  [45] "2017-06-24 08:30:13 UTC" "2017-06-24 08:40:13 UTC"
##  [47] "2017-06-24 08:50:13 UTC" "2017-06-24 09:00:13 UTC"
##  [49] "2017-06-24 09:10:13 UTC" "2017-06-24 09:20:13 UTC"
##  [51] "2017-06-24 09:30:13 UTC" "2017-06-24 09:40:13 UTC"
##  [53] "2017-06-24 09:50:13 UTC" "2017-06-24 10:00:13 UTC"
##  [55] "2017-06-24 10:10:13 UTC" "2017-06-24 10:20:13 UTC"
##  [57] "2017-06-24 10:30:13 UTC" "2017-06-24 10:40:13 UTC"
##  [59] "2017-06-24 10:50:13 UTC" "2017-06-24 11:00:13 UTC"
##  [61] "2017-06-24 11:10:13 UTC" "2017-06-24 11:20:13 UTC"
##  [63] "2017-06-24 11:30:13 UTC" "2017-06-24 11:40:13 UTC"
##  [65] "2017-06-24 11:50:13 UTC" "2017-06-24 12:00:13 UTC"
##  [67] "2017-06-24 12:10:13 UTC" "2017-06-24 12:20:13 UTC"
##  [69] "2017-06-24 12:30:13 UTC" "2017-06-24 12:40:13 UTC"
##  [71] "2017-06-24 12:50:13 UTC" "2017-06-24 13:00:13 UTC"
##  [73] "2017-06-24 13:10:13 UTC" "2017-06-24 13:20:13 UTC"
##  [75] "2017-06-24 13:30:13 UTC" "2017-06-24 13:40:13 UTC"
##  [77] "2017-06-24 13:50:13 UTC" "2017-06-24 14:00:13 UTC"
##  [79] "2017-06-24 14:10:13 UTC" "2017-06-24 14:20:13 UTC"
##  [81] "2017-06-24 14:30:13 UTC" "2017-06-24 14:40:13 UTC"
##  [83] "2017-06-24 14:50:13 UTC" "2017-06-24 15:00:13 UTC"
##  [85] "2017-06-24 15:10:13 UTC" "2017-06-24 15:20:13 UTC"
##  [87] "2017-06-24 15:30:13 UTC" "2017-06-24 15:40:13 UTC"
##  [89] "2017-06-24 15:50:13 UTC" "2017-06-24 16:00:13 UTC"
##  [91] "2017-06-24 16:10:13 UTC" "2017-06-24 16:20:13 UTC"
##  [93] "2017-06-24 16:30:13 UTC" "2017-06-24 16:40:13 UTC"
##  [95] "2017-06-24 16:50:13 UTC" "2017-06-24 17:00:13 UTC"
##  [97] "2017-06-24 17:10:13 UTC" "2017-06-24 17:20:13 UTC"
##  [99] "2017-06-24 17:30:13 UTC" "2017-06-24 17:40:13 UTC"
## [101] "2017-06-24 17:50:13 UTC" "2017-06-24 18:00:13 UTC"
## [103] "2017-06-24 18:10:13 UTC" "2017-06-24 18:20:13 UTC"
## [105] "2017-06-24 18:30:13 UTC" "2017-06-24 18:40:13 UTC"
## [107] "2017-06-24 18:50:13 UTC" "2017-06-24 19:00:13 UTC"
## [109] "2017-06-24 19:10:13 UTC" "2017-06-24 19:20:13 UTC"
## [111] "2017-06-24 19:30:13 UTC" "2017-06-24 19:40:13 UTC"
## [113] "2017-06-24 19:50:13 UTC" "2017-06-24 20:00:13 UTC"
## [115] "2017-06-24 20:10:13 UTC" "2017-06-24 20:20:13 UTC"
## [117] "2017-06-24 20:30:13 UTC" "2017-06-24 20:40:13 UTC"
## [119] "2017-06-24 20:50:13 UTC" "2017-06-24 21:00:13 UTC"
## [121] "2017-06-24 21:10:13 UTC" "2017-06-24 21:20:13 UTC"
## [123] "2017-06-24 21:30:13 UTC" "2017-06-24 21:40:13 UTC"
## [125] "2017-06-24 21:50:13 UTC" "2017-06-24 22:00:13 UTC"
## [127] "2017-06-24 22:10:13 UTC" "2017-06-24 22:20:13 UTC"
## [129] "2017-06-24 22:30:13 UTC" "2017-06-24 22:40:13 UTC"
## [131] "2017-06-24 22:50:13 UTC" "2017-06-24 23:00:13 UTC"
## [133] "2017-06-24 23:10:13 UTC" "2017-06-24 23:20:13 UTC"
## [135] "2017-06-24 23:30:13 UTC" "2017-06-24 23:40:13 UTC"
## [137] "2017-06-24 23:50:13 UTC" "2017-06-25 00:00:13 UTC"
## [139] "2017-06-25 00:10:13 UTC" "2017-06-25 00:20:13 UTC"
## [141] "2017-06-25 00:30:13 UTC" "2017-06-25 00:40:13 UTC"
## [143] "2017-06-25 00:50:13 UTC" "2017-06-25 01:00:13 UTC"
## [145] "2017-06-25 01:10:13 UTC" "2017-06-25 01:20:13 UTC"
## [147] "2017-06-25 01:30:13 UTC" "2017-06-25 01:40:13 UTC"
## [149] "2017-06-25 01:50:13 UTC" "2017-06-25 02:00:13 UTC"
## [151] "2017-06-25 02:10:13 UTC" "2017-06-25 02:20:13 UTC"
## [153] "2017-06-25 02:30:13 UTC" "2017-06-25 02:40:13 UTC"
## [155] "2017-06-25 02:50:13 UTC" "2017-06-25 03:00:13 UTC"
## [157] "2017-06-25 03:10:13 UTC" "2017-06-25 03:20:13 UTC"
## [159] "2017-06-25 03:30:13 UTC" "2017-06-25 03:40:13 UTC"
## [161] "2017-06-25 03:50:13 UTC" "2017-06-25 04:00:13 UTC"
## [163] "2017-06-25 04:10:13 UTC" "2017-06-25 04:20:13 UTC"
## [165] "2017-06-25 04:30:13 UTC" "2017-06-25 04:40:13 UTC"
## [167] "2017-06-25 04:50:13 UTC" "2017-06-25 05:00:13 UTC"
## [169] "2017-06-25 05:10:13 UTC" "2017-06-25 05:20:13 UTC"
## [171] "2017-06-25 05:30:13 UTC" "2017-06-25 05:40:13 UTC"
## [173] "2017-06-25 05:50:13 UTC" "2017-06-25 06:00:13 UTC"
## [175] "2017-06-25 06:10:13 UTC" "2017-06-25 06:20:13 UTC"
## [177] "2017-06-25 06:30:13 UTC" "2017-06-25 06:40:13 UTC"
## [179] "2017-06-25 06:50:13 UTC" "2017-06-25 07:00:13 UTC"
## [181] "2017-06-25 07:10:13 UTC" "2017-06-25 07:20:13 UTC"
## [183] "2017-06-25 07:30:13 UTC" "2017-06-25 07:40:13 UTC"
## [185] "2017-06-25 07:50:13 UTC" "2017-06-25 08:00:13 UTC"
## [187] "2017-06-25 08:10:13 UTC" "2017-06-25 08:20:13 UTC"
## [189] "2017-06-25 08:30:13 UTC" "2017-06-25 08:40:13 UTC"
## [191] "2017-06-25 08:50:13 UTC" "2017-06-25 09:00:13 UTC"
## [193] "2017-06-25 09:10:13 UTC" "2017-06-25 09:20:13 UTC"
## [195] "2017-06-25 09:30:13 UTC" "2017-06-25 09:40:13 UTC"
## [197] "2017-06-25 09:50:13 UTC" "2017-06-25 10:00:13 UTC"
## [199] "2017-06-25 10:10:13 UTC" "2017-06-25 10:20:13 UTC"
## [201] "2017-06-25 10:30:13 UTC" "2017-06-25 10:40:13 UTC"
## [203] "2017-06-25 10:50:13 UTC" "2017-06-25 11:00:13 UTC"
## [205] "2017-06-25 11:10:13 UTC" "2017-06-25 11:20:13 UTC"
## [207] "2017-06-25 11:30:13 UTC" "2017-06-25 11:40:13 UTC"
## [209] "2017-06-25 11:50:13 UTC" "2017-06-25 12:00:13 UTC"
## [211] "2017-06-25 12:10:13 UTC" "2017-06-25 12:20:13 UTC"
## [213] "2017-06-25 12:30:13 UTC" "2017-06-25 12:40:13 UTC"
## [215] "2017-06-25 12:50:13 UTC" "2017-06-25 13:00:13 UTC"
## [217] "2017-06-25 13:10:13 UTC" "2017-06-25 13:20:13 UTC"
## [219] "2017-06-25 13:30:13 UTC" "2017-06-25 13:40:13 UTC"
## [221] "2017-06-25 13:50:13 UTC" "2017-06-25 14:00:13 UTC"
## [223] "2017-06-25 14:10:13 UTC" "2017-06-25 14:20:13 UTC"
## [225] "2017-06-25 14:30:13 UTC" "2017-06-25 14:40:13 UTC"
## [227] "2017-06-25 14:50:13 UTC" "2017-06-25 15:00:13 UTC"
## [229] "2017-06-25 15:10:13 UTC" "2017-06-25 15:20:13 UTC"
## [231] "2017-06-25 15:30:13 UTC" "2017-06-25 15:40:13 UTC"
## [233] "2017-06-25 15:50:13 UTC" "2017-06-25 16:00:13 UTC"
## [235] "2017-06-25 16:10:13 UTC" "2017-06-25 16:20:13 UTC"
## [237] "2017-06-25 16:30:13 UTC" "2017-06-25 16:40:13 UTC"
## [239] "2017-06-25 16:50:13 UTC" "2017-06-25 17:00:13 UTC"
## [241] "2017-06-25 17:10:13 UTC" "2017-06-25 17:20:13 UTC"
## [243] "2017-06-25 17:30:13 UTC" "2017-06-25 17:40:13 UTC"
## [245] "2017-06-25 17:50:13 UTC" "2017-06-25 18:00:13 UTC"
## [247] "2017-06-25 18:10:13 UTC" "2017-06-25 18:20:13 UTC"
## [249] "2017-06-25 18:30:13 UTC" "2017-06-25 18:40:13 UTC"
## [251] "2017-06-25 18:50:13 UTC" "2017-06-25 19:00:13 UTC"
## [253] "2017-06-25 19:10:13 UTC" "2017-06-25 19:20:13 UTC"
## [255] "2017-06-25 19:30:13 UTC" "2017-06-25 19:40:13 UTC"
## [257] "2017-06-25 19:50:13 UTC" "2017-06-25 20:00:13 UTC"
## [259] "2017-06-25 20:10:13 UTC" "2017-06-25 20:20:13 UTC"
## [261] "2017-06-25 20:30:13 UTC" "2017-06-25 20:40:13 UTC"
## [263] "2017-06-25 20:50:13 UTC" "2017-06-25 21:00:13 UTC"
## [265] "2017-06-25 21:10:13 UTC" "2017-06-25 21:20:13 UTC"
## [267] "2017-06-25 21:30:13 UTC" "2017-06-25 21:40:13 UTC"
## [269] "2017-06-25 21:50:13 UTC" "2017-06-25 22:00:13 UTC"
## [271] "2017-06-25 22:10:13 UTC" "2017-06-25 22:20:13 UTC"
## [273] "2017-06-25 22:30:13 UTC" "2017-06-25 22:40:13 UTC"
## [275] "2017-06-25 22:50:13 UTC" "2017-06-25 23:00:13 UTC"
## [277] "2017-06-25 23:10:13 UTC" "2017-06-25 23:20:13 UTC"
## [279] "2017-06-25 23:30:13 UTC" "2017-06-25 23:40:13 UTC"
## [281] "2017-06-25 23:50:13 UTC" "2017-06-26 00:00:13 UTC"
## [283] "2017-06-26 00:10:13 UTC" "2017-06-26 00:20:13 UTC"
## [285] "2017-06-26 00:30:13 UTC" "2017-06-26 00:40:13 UTC"
## [287] "2017-06-26 00:50:13 UTC" "2017-06-26 01:00:13 UTC"
## [289] "2017-06-26 01:10:13 UTC" "2017-06-26 01:20:13 UTC"
## [291] "2017-06-26 01:30:13 UTC" "2017-06-26 01:40:13 UTC"
## [293] "2017-06-26 01:50:13 UTC" "2017-06-26 02:00:13 UTC"
## [295] "2017-06-26 02:10:13 UTC" "2017-06-26 02:20:13 UTC"
## [297] "2017-06-26 02:30:13 UTC" "2017-06-26 02:40:13 UTC"
## [299] "2017-06-26 02:50:13 UTC" "2017-06-26 03:00:13 UTC"
## [301] "2017-06-26 03:10:13 UTC" "2017-06-26 03:20:13 UTC"
## [303] "2017-06-26 03:30:13 UTC" "2017-06-26 03:40:13 UTC"
## [305] "2017-06-26 03:50:13 UTC" "2017-06-26 04:00:13 UTC"
## [307] "2017-06-26 04:10:13 UTC" "2017-06-26 04:20:13 UTC"
## [309] "2017-06-26 04:30:13 UTC" "2017-06-26 04:40:13 UTC"
## [311] "2017-06-26 04:50:13 UTC" "2017-06-26 05:00:13 UTC"
## [313] "2017-06-26 05:10:13 UTC" "2017-06-26 05:20:13 UTC"
## [315] "2017-06-26 05:30:13 UTC" "2017-06-26 05:40:13 UTC"
## [317] "2017-06-26 05:50:13 UTC" "2017-06-26 06:00:13 UTC"
## [319] "2017-06-26 06:10:13 UTC" "2017-06-26 06:20:13 UTC"
## [321] "2017-06-26 06:30:13 UTC" "2017-06-26 06:40:13 UTC"
## [323] "2017-06-26 06:50:13 UTC" "2017-06-26 07:00:13 UTC"
## [325] "2017-06-26 07:10:13 UTC" "2017-06-26 07:20:13 UTC"
## [327] "2017-06-26 07:30:13 UTC" "2017-06-26 07:40:13 UTC"
## [329] "2017-06-26 07:50:13 UTC" "2017-06-26 08:00:13 UTC"
## [331] "2017-06-26 08:10:13 UTC" "2017-06-26 08:20:13 UTC"
## [333] "2017-06-26 08:30:13 UTC" "2017-06-26 08:40:13 UTC"
## [335] "2017-06-26 08:50:13 UTC" "2017-06-26 09:00:13 UTC"
## [337] "2017-06-26 09:10:13 UTC" "2017-06-26 09:20:13 UTC"
## [339] "2017-06-26 09:30:13 UTC" "2017-06-26 09:40:13 UTC"
## [341] "2017-06-26 09:50:13 UTC" "2017-06-26 10:00:13 UTC"
## [343] "2017-06-26 10:10:13 UTC" "2017-06-26 10:20:13 UTC"
## [345] "2017-06-26 10:30:13 UTC" "2017-06-26 10:40:13 UTC"
## [347] "2017-06-26 10:50:13 UTC" "2017-06-26 11:00:13 UTC"
## [349] "2017-06-26 11:10:13 UTC" "2017-06-26 11:20:13 UTC"
## [351] "2017-06-26 11:30:13 UTC" "2017-06-26 11:40:13 UTC"
## [353] "2017-06-26 11:50:13 UTC" "2017-06-26 12:00:13 UTC"
## [355] "2017-06-26 12:10:13 UTC" "2017-06-26 12:20:13 UTC"
## [357] "2017-06-26 12:30:13 UTC" "2017-06-26 12:40:13 UTC"
## [359] "2017-06-26 12:50:13 UTC" "2017-06-26 13:00:13 UTC"
## [361] "2017-06-26 13:10:13 UTC" "2017-06-26 13:20:13 UTC"
## [363] "2017-06-26 13:30:13 UTC" "2017-06-26 13:40:13 UTC"
## [365] "2017-06-26 13:50:13 UTC" "2017-06-26 14:00:13 UTC"
## [367] "2017-06-26 14:10:13 UTC" "2017-06-26 14:20:13 UTC"
## [369] "2017-06-26 14:30:13 UTC" "2017-06-26 14:40:13 UTC"
## [371] "2017-06-26 14:50:13 UTC" "2017-06-26 15:00:13 UTC"
## [373] "2017-06-26 15:10:13 UTC" "2017-06-26 15:20:13 UTC"
## [375] "2017-06-26 15:30:13 UTC" "2017-06-26 15:40:13 UTC"
## [377] "2017-06-26 15:50:13 UTC" "2017-06-26 16:00:13 UTC"
## [379] "2017-06-26 16:10:13 UTC" "2017-06-26 16:20:13 UTC"
## [381] "2017-06-26 16:30:13 UTC" "2017-06-26 16:40:13 UTC"
## [383] "2017-06-26 16:50:13 UTC" "2017-06-26 17:00:13 UTC"
## [385] "2017-06-26 17:10:13 UTC" "2017-06-26 17:20:13 UTC"
## [387] "2017-06-26 17:30:13 UTC" "2017-06-26 17:40:13 UTC"
## [389] "2017-06-26 17:50:13 UTC" "2017-06-26 18:00:13 UTC"
## [391] "2017-06-26 18:10:13 UTC" "2017-06-26 18:20:13 UTC"
## [393] "2017-06-26 18:30:13 UTC" "2017-06-26 18:40:13 UTC"
## [395] "2017-06-26 18:50:13 UTC" "2017-06-26 19:00:13 UTC"
## [397] "2017-06-26 19:10:13 UTC" "2017-06-26 19:20:13 UTC"
## [399] "2017-06-26 19:30:13 UTC" "2017-06-26 19:40:13 UTC"
## [401] "2017-06-26 19:50:13 UTC" "2017-06-26 20:00:13 UTC"
## [403] "2017-06-26 20:10:13 UTC" "2017-06-26 20:20:13 UTC"
## [405] "2017-06-26 20:30:13 UTC" "2017-06-26 20:40:13 UTC"
## [407] "2017-06-26 20:50:13 UTC" "2017-06-26 21:00:13 UTC"
## [409] "2017-06-26 21:10:13 UTC" "2017-06-26 21:20:13 UTC"
## [411] "2017-06-26 21:30:13 UTC" "2017-06-26 21:40:13 UTC"
## [413] "2017-06-26 21:50:13 UTC" "2017-06-26 22:00:13 UTC"
## [415] "2017-06-26 22:10:13 UTC" "2017-06-26 22:20:13 UTC"
## [417] "2017-06-26 22:30:13 UTC" "2017-06-26 22:40:13 UTC"
## [419] "2017-06-26 22:50:13 UTC" "2017-06-26 23:00:13 UTC"
## [421] "2017-06-26 23:10:13 UTC" "2017-06-26 23:20:13 UTC"
## [423] "2017-06-26 23:30:13 UTC" "2017-06-26 23:40:13 UTC"
## [425] "2017-06-26 23:50:13 UTC" "2017-06-27 00:00:13 UTC"
## [427] "2017-06-27 00:10:13 UTC" "2017-06-27 00:20:13 UTC"
## [429] "2017-06-27 00:30:13 UTC" "2017-06-27 00:40:13 UTC"
## [431] "2017-06-27 00:50:13 UTC" "2017-06-27 01:00:13 UTC"
## [433] "2017-06-27 01:10:13 UTC" "2017-06-27 01:20:13 UTC"
## [435] "2017-06-27 01:30:13 UTC" "2017-06-27 01:40:13 UTC"
## [437] "2017-06-27 01:50:13 UTC" "2017-06-27 02:00:13 UTC"
## [439] "2017-06-27 02:10:13 UTC" "2017-06-27 02:20:13 UTC"
## [441] "2017-06-27 02:30:13 UTC" "2017-06-27 02:40:13 UTC"
## [443] "2017-06-27 02:50:13 UTC" "2017-06-27 03:00:13 UTC"
## [445] "2017-06-27 03:10:13 UTC" "2017-06-27 03:20:13 UTC"
## [447] "2017-06-27 03:30:13 UTC" "2017-06-27 03:40:13 UTC"
## [449] "2017-06-27 03:50:13 UTC" "2017-06-27 04:00:13 UTC"
## [451] "2017-06-27 04:10:13 UTC" "2017-06-27 04:20:13 UTC"
## [453] "2017-06-27 04:30:13 UTC" "2017-06-27 04:40:13 UTC"
## [455] "2017-06-27 04:50:13 UTC" "2017-06-27 05:00:13 UTC"
## [457] "2017-06-27 05:10:13 UTC" "2017-06-27 05:20:13 UTC"
## [459] "2017-06-27 05:30:13 UTC" "2017-06-27 05:40:13 UTC"
## [461] "2017-06-27 05:50:13 UTC" "2017-06-27 06:00:13 UTC"
## [463] "2017-06-27 06:10:13 UTC" "2017-06-27 06:20:13 UTC"
## [465] "2017-06-27 06:30:13 UTC" "2017-06-27 06:40:13 UTC"
## [467] "2017-06-27 06:50:13 UTC" "2017-06-27 07:00:13 UTC"
## [469] "2017-06-27 07:10:13 UTC" "2017-06-27 07:20:13 UTC"
## [471] "2017-06-27 07:30:13 UTC" "2017-06-27 07:40:13 UTC"
## [473] "2017-06-27 07:50:13 UTC" "2017-06-27 08:00:13 UTC"
## [475] "2017-06-27 08:10:13 UTC" "2017-06-27 08:20:13 UTC"
## [477] "2017-06-27 08:30:13 UTC" "2017-06-27 08:40:13 UTC"
## [479] "2017-06-27 08:50:13 UTC" "2017-06-27 09:00:13 UTC"
## [481] "2017-06-27 09:10:13 UTC" "2017-06-27 09:20:13 UTC"
## [483] "2017-06-27 09:30:13 UTC" "2017-06-27 09:40:13 UTC"
## [485] "2017-06-27 09:50:13 UTC" "2017-06-27 10:00:13 UTC"
## [487] "2017-06-27 10:10:13 UTC" "2017-06-27 10:20:13 UTC"
## [489] "2017-06-27 10:30:13 UTC" "2017-06-27 10:40:13 UTC"
## [491] "2017-06-27 10:50:13 UTC" "2017-06-27 11:00:13 UTC"
## [493] "2017-06-27 11:10:13 UTC" "2017-06-27 11:20:13 UTC"
## [495] "2017-06-27 11:30:13 UTC" "2017-06-27 11:40:13 UTC"
## [497] "2017-06-27 11:50:13 UTC" "2017-06-27 12:00:13 UTC"
## [499] "2017-06-27 12:10:13 UTC" "2017-06-27 12:20:13 UTC"
## [501] "2017-06-27 12:30:13 UTC" "2017-06-27 12:40:13 UTC"
## [503] "2017-06-27 12:50:13 UTC" "2017-06-27 13:00:13 UTC"
## [505] "2017-06-27 13:10:13 UTC" "2017-06-27 13:20:13 UTC"
## [507] "2017-06-27 13:30:13 UTC" "2017-06-27 13:40:13 UTC"
## [509] "2017-06-27 13:50:13 UTC" "2017-06-27 14:00:13 UTC"
## [511] "2017-06-27 14:10:13 UTC" "2017-06-27 14:20:13 UTC"
## [513] "2017-06-27 14:30:13 UTC" "2017-06-27 14:40:13 UTC"
## [515] "2017-06-27 14:50:13 UTC" "2017-06-27 15:00:13 UTC"
## [517] "2017-06-27 15:10:13 UTC" "2017-06-27 15:20:13 UTC"
## [519] "2017-06-27 15:30:13 UTC" "2017-06-27 15:40:13 UTC"
## [521] "2017-06-27 15:50:13 UTC" "2017-06-27 16:00:13 UTC"
## [523] "2017-06-27 16:10:13 UTC" "2017-06-27 16:20:13 UTC"
## [525] "2017-06-27 16:30:13 UTC" "2017-06-27 16:40:13 UTC"
## [527] "2017-06-27 16:50:13 UTC" "2017-06-27 17:00:13 UTC"
## [529] "2017-06-27 17:10:13 UTC" "2017-06-27 17:20:13 UTC"
## [531] "2017-06-27 17:30:13 UTC" "2017-06-27 17:40:13 UTC"
## [533] "2017-06-27 17:50:13 UTC" "2017-06-27 18:00:13 UTC"
## [535] "2017-06-27 18:10:13 UTC" "2017-06-27 18:20:13 UTC"
## [537] "2017-06-27 18:30:13 UTC" "2017-06-27 18:40:13 UTC"
## [539] "2017-06-27 18:50:13 UTC" "2017-06-27 19:00:13 UTC"
## [541] "2017-06-27 19:10:13 UTC" "2017-06-27 19:20:13 UTC"
## [543] "2017-06-27 19:30:13 UTC" "2017-06-27 19:40:13 UTC"
## [545] "2017-06-27 19:50:13 UTC" "2017-06-27 20:00:13 UTC"
## [547] "2017-06-27 20:10:13 UTC" "2017-06-27 20:20:13 UTC"
## [549] "2017-06-27 20:30:13 UTC" "2017-06-27 20:40:13 UTC"
## [551] "2017-06-27 20:50:13 UTC" "2017-06-27 21:00:13 UTC"
## [553] "2017-06-27 21:10:13 UTC" "2017-06-27 21:20:13 UTC"
## [555] "2017-06-27 21:30:13 UTC" "2017-06-27 21:40:13 UTC"
## [557] "2017-06-27 21:50:13 UTC" "2017-06-27 22:00:13 UTC"
## [559] "2017-06-27 22:10:13 UTC" "2017-06-27 22:20:13 UTC"
## [561] "2017-06-27 22:30:13 UTC" "2017-06-27 22:40:13 UTC"
## [563] "2017-06-27 22:50:13 UTC" "2017-06-27 23:00:13 UTC"
## [565] "2017-06-27 23:10:13 UTC" "2017-06-27 23:20:13 UTC"
## [567] "2017-06-27 23:30:13 UTC" "2017-06-27 23:40:13 UTC"
## [569] "2017-06-27 23:50:13 UTC" "2017-06-28 00:00:13 UTC"
## [571] "2017-06-28 00:10:13 UTC" "2017-06-28 00:20:13 UTC"
## [573] "2017-06-28 00:30:13 UTC" "2017-06-28 00:40:13 UTC"
## [575] "2017-06-28 00:50:13 UTC" "2017-06-28 01:00:13 UTC"
## [577] "2017-06-28 01:10:13 UTC" "2017-06-28 01:20:13 UTC"
## [579] "2017-06-28 01:30:13 UTC" "2017-06-28 01:40:13 UTC"
## [581] "2017-06-28 01:50:13 UTC" "2017-06-28 02:00:13 UTC"
## [583] "2017-06-28 02:10:13 UTC" "2017-06-28 02:20:13 UTC"
## [585] "2017-06-28 02:30:13 UTC" "2017-06-28 02:40:13 UTC"
## [587] "2017-06-28 02:50:13 UTC" "2017-06-28 03:00:13 UTC"
## [589] "2017-06-28 03:10:13 UTC" "2017-06-28 03:20:13 UTC"
## [591] "2017-06-28 03:30:13 UTC" "2017-06-28 03:40:13 UTC"
## [593] "2017-06-28 03:50:13 UTC" "2017-06-28 04:00:13 UTC"
## [595] "2017-06-28 04:10:13 UTC" "2017-06-28 04:20:13 UTC"
## [597] "2017-06-28 04:30:13 UTC" "2017-06-28 04:40:13 UTC"
## [599] "2017-06-28 04:50:13 UTC" "2017-06-28 05:00:13 UTC"
## [601] "2017-06-28 05:10:13 UTC" "2017-06-28 05:20:13 UTC"
## [603] "2017-06-28 05:30:13 UTC" "2017-06-28 05:40:13 UTC"
## [605] "2017-06-28 05:50:13 UTC" "2017-06-28 06:00:13 UTC"
## [607] "2017-06-28 06:10:13 UTC" "2017-06-28 06:20:13 UTC"
## [609] "2017-06-28 06:30:13 UTC" "2017-06-28 06:40:13 UTC"
## [611] "2017-06-28 06:50:13 UTC" "2017-06-28 07:00:13 UTC"
## [613] "2017-06-28 07:10:13 UTC" "2017-06-28 07:20:13 UTC"
## [615] "2017-06-28 07:30:13 UTC" "2017-06-28 07:40:13 UTC"
## [617] "2017-06-28 07:50:13 UTC" "2017-06-28 08:00:13 UTC"
## [619] "2017-06-28 08:10:13 UTC" "2017-06-28 08:20:13 UTC"
## [621] "2017-06-28 08:30:13 UTC" "2017-06-28 08:40:13 UTC"
## [623] "2017-06-28 08:50:13 UTC" "2017-06-28 09:00:13 UTC"
## [625] "2017-06-28 09:10:13 UTC" "2017-06-28 09:20:13 UTC"
## [627] "2017-06-28 09:30:13 UTC" "2017-06-28 09:40:13 UTC"
## [629] "2017-06-28 09:50:13 UTC" "2017-06-28 10:00:13 UTC"
## [631] "2017-06-28 10:10:13 UTC" "2017-06-28 10:20:13 UTC"
## [633] "2017-06-28 10:30:13 UTC" "2017-06-28 10:40:13 UTC"
## [635] "2017-06-28 10:50:13 UTC" "2017-06-28 11:00:13 UTC"
## [637] "2017-06-28 11:10:13 UTC" "2017-06-28 11:20:13 UTC"
## [639] "2017-06-28 11:30:13 UTC" "2017-06-28 11:40:13 UTC"
## [641] "2017-06-28 11:50:13 UTC" "2017-06-28 12:00:13 UTC"
## [643] "2017-06-28 12:10:13 UTC" "2017-06-28 12:20:13 UTC"
## [645] "2017-06-28 12:30:13 UTC" "2017-06-28 12:40:13 UTC"
## [647] "2017-06-28 12:50:13 UTC" "2017-06-28 13:00:13 UTC"
## [649] "2017-06-28 13:10:13 UTC" "2017-06-28 13:20:13 UTC"
## [651] "2017-06-28 13:30:13 UTC" "2017-06-28 13:40:13 UTC"
## [653] "2017-06-28 13:50:13 UTC" "2017-06-28 14:00:13 UTC"
## [655] "2017-06-28 14:10:13 UTC" "2017-06-28 14:20:13 UTC"
## [657] "2017-06-28 14:30:13 UTC" "2017-06-28 14:40:13 UTC"
## [659] "2017-06-28 14:50:13 UTC" "2017-06-28 15:00:13 UTC"
## [661] "2017-06-28 15:10:13 UTC" "2017-06-28 15:20:13 UTC"
## [663] "2017-06-28 15:30:13 UTC" "2017-06-28 15:40:13 UTC"
## [665] "2017-06-28 15:50:13 UTC" "2017-06-28 16:00:13 UTC"
## [667] "2017-06-28 16:10:13 UTC" "2017-06-28 16:20:13 UTC"
## [669] "2017-06-28 16:30:13 UTC" "2017-06-28 16:40:13 UTC"
## [671] "2017-06-28 16:50:13 UTC" "2017-06-28 17:00:13 UTC"
## [673] "2017-06-28 17:10:13 UTC" "2017-06-28 17:20:13 UTC"
## [675] "2017-06-28 17:30:13 UTC" "2017-06-28 17:40:13 UTC"
## [677] "2017-06-28 17:50:13 UTC" "2017-06-28 18:00:13 UTC"
## [679] "2017-06-28 18:10:13 UTC" "2017-06-28 18:20:13 UTC"
## [681] "2017-06-28 18:30:13 UTC" "2017-06-28 18:40:13 UTC"
## [683] "2017-06-28 18:50:13 UTC" "2017-06-28 19:00:13 UTC"
## [685] "2017-06-28 19:10:13 UTC" "2017-06-28 19:20:13 UTC"
## [687] "2017-06-28 19:30:13 UTC" "2017-06-28 19:40:13 UTC"
## [689] "2017-06-28 19:50:13 UTC" "2017-06-28 20:00:13 UTC"
## [691] "2017-06-28 20:10:13 UTC" "2017-06-28 20:20:13 UTC"
## [693] "2017-06-28 20:30:13 UTC" "2017-06-28 20:40:13 UTC"
## [695] "2017-06-28 20:50:13 UTC" "2017-06-28 21:00:13 UTC"
## [697] "2017-06-28 21:10:13 UTC" "2017-06-28 21:20:13 UTC"
## [699] "2017-06-28 21:30:13 UTC" "2017-06-28 21:40:13 UTC"
## [701] "2017-06-28 21:50:13 UTC" "2017-06-28 22:00:13 UTC"
## [703] "2017-06-28 22:10:13 UTC" "2017-06-28 22:20:13 UTC"
## [705] "2017-06-28 22:30:13 UTC" "2017-06-28 22:40:13 UTC"
## [707] "2017-06-28 22:50:13 UTC" "2017-06-28 23:00:13 UTC"
## [709] "2017-06-28 23:10:13 UTC" "2017-06-28 23:20:13 UTC"
## [711] "2017-06-28 23:30:13 UTC" "2017-06-28 23:40:13 UTC"
## [713] "2017-06-28 23:50:13 UTC" "2017-06-29 00:00:13 UTC"
## [715] "2017-06-29 00:10:13 UTC" "2017-06-29 00:20:13 UTC"
## [717] "2017-06-29 00:30:13 UTC" "2017-06-29 00:40:13 UTC"
## [719] "2017-06-29 00:50:13 UTC" "2017-06-29 01:00:13 UTC"
## [721] "2017-06-29 01:10:13 UTC" "2017-06-29 01:20:13 UTC"
## [723] "2017-06-29 01:30:13 UTC" "2017-06-29 01:40:13 UTC"
## [725] "2017-06-29 01:50:13 UTC" "2017-06-29 02:00:13 UTC"
## [727] "2017-06-29 02:10:13 UTC" "2017-06-29 02:20:13 UTC"
## [729] "2017-06-29 02:30:13 UTC" "2017-06-29 02:40:13 UTC"
## [731] "2017-06-29 02:50:13 UTC" "2017-06-29 03:00:13 UTC"
## [733] "2017-06-29 03:10:13 UTC" "2017-06-29 03:20:13 UTC"
## [735] "2017-06-29 03:30:13 UTC" "2017-06-29 03:40:13 UTC"
## [737] "2017-06-29 03:50:13 UTC" "2017-06-29 04:00:13 UTC"
## [739] "2017-06-29 04:10:13 UTC" "2017-06-29 04:20:13 UTC"
## [741] "2017-06-29 04:30:13 UTC" "2017-06-29 04:40:13 UTC"
## [743] "2017-06-29 04:50:13 UTC" "2017-06-29 05:00:13 UTC"
## [745] "2017-06-29 05:10:13 UTC" "2017-06-29 05:20:13 UTC"
## [747] "2017-06-29 05:30:13 UTC" "2017-06-29 05:40:13 UTC"
## [749] "2017-06-29 05:50:13 UTC" "2017-06-29 06:00:13 UTC"
## [751] "2017-06-29 06:10:13 UTC" "2017-06-29 06:20:13 UTC"
## [753] "2017-06-29 06:30:13 UTC" "2017-06-29 06:40:13 UTC"
## [755] "2017-06-29 06:50:13 UTC" "2017-06-29 07:00:13 UTC"
## [757] "2017-06-29 07:10:13 UTC" "2017-06-29 07:20:13 UTC"
## [759] "2017-06-29 07:30:13 UTC" "2017-06-29 07:40:13 UTC"
## [761] "2017-06-29 07:50:13 UTC" "2017-06-29 08:00:13 UTC"
## [763] "2017-06-29 08:10:13 UTC" "2017-06-29 08:20:13 UTC"
## [765] "2017-06-29 08:30:13 UTC" "2017-06-29 08:40:13 UTC"
## [767] "2017-06-29 08:50:13 UTC" "2017-06-29 09:00:13 UTC"
## [769] "2017-06-29 09:10:13 UTC" "2017-06-29 09:20:13 UTC"
## [771] "2017-06-29 09:30:13 UTC" "2017-06-29 09:40:13 UTC"
## [773] "2017-06-29 09:50:13 UTC" "2017-06-29 10:00:13 UTC"
## [775] "2017-06-29 10:10:13 UTC" "2017-06-29 10:20:13 UTC"
## [777] "2017-06-29 10:30:13 UTC" "2017-06-29 10:40:13 UTC"
## [779] "2017-06-29 10:50:13 UTC" "2017-06-29 11:00:13 UTC"
## [781] "2017-06-29 11:10:13 UTC" "2017-06-29 11:20:13 UTC"
## [783] "2017-06-29 11:30:13 UTC" "2017-06-29 11:40:13 UTC"
## [785] "2017-06-29 11:50:13 UTC" "2017-06-29 12:00:13 UTC"
## [787] "2017-06-29 12:10:13 UTC" "2017-06-29 12:20:13 UTC"
## [789] "2017-06-29 12:30:13 UTC" "2017-06-29 12:40:13 UTC"
## [791] "2017-06-29 12:50:13 UTC" "2017-06-29 13:00:13 UTC"
## [793] "2017-06-29 13:10:13 UTC" "2017-06-29 13:20:13 UTC"
## [795] "2017-06-29 13:30:13 UTC" "2017-06-29 13:40:13 UTC"
## [797] "2017-06-29 13:50:13 UTC" "2017-06-29 14:00:13 UTC"
## [799] "2017-06-29 14:10:13 UTC" "2017-06-29 14:20:13 UTC"
## [801] "2017-06-29 14:30:13 UTC" "2017-06-29 14:40:13 UTC"
## [803] "2017-06-29 14:50:13 UTC" "2017-06-29 15:00:13 UTC"
## [805] "2017-06-29 15:10:13 UTC" "2017-06-29 15:20:13 UTC"
## [807] "2017-06-29 15:30:13 UTC" "2017-06-29 15:40:13 UTC"
## [809] "2017-06-29 15:50:13 UTC" "2017-06-29 16:00:13 UTC"
## [811] "2017-06-29 16:10:13 UTC" "2017-06-29 16:20:13 UTC"
## [813] "2017-06-29 16:30:13 UTC" "2017-06-29 16:40:13 UTC"
## [815] "2017-06-29 16:50:13 UTC" "2017-06-29 17:00:13 UTC"
## [817] "2017-06-29 17:10:13 UTC" "2017-06-29 17:20:13 UTC"
## [819] "2017-06-29 17:30:13 UTC" "2017-06-29 17:40:13 UTC"
## [821] "2017-06-29 17:50:13 UTC" "2017-06-29 18:00:13 UTC"
## [823] "2017-06-29 18:10:13 UTC" "2017-06-29 18:20:13 UTC"
## [825] "2017-06-29 18:30:13 UTC" "2017-06-29 18:40:13 UTC"
## [827] "2017-06-29 18:50:13 UTC" "2017-06-29 19:00:13 UTC"
## [829] "2017-06-29 19:10:13 UTC" "2017-06-29 19:20:13 UTC"
## [831] "2017-06-29 19:30:13 UTC" "2017-06-29 19:40:13 UTC"
## [833] "2017-06-29 19:50:13 UTC" "2017-06-29 20:00:13 UTC"
## [835] "2017-06-29 20:10:13 UTC" "2017-06-29 20:20:13 UTC"
## [837] "2017-06-29 20:30:13 UTC" "2017-06-29 20:40:13 UTC"
## [839] "2017-06-29 20:50:13 UTC" "2017-06-29 21:00:13 UTC"
## [841] "2017-06-29 21:10:13 UTC" "2017-06-29 21:20:13 UTC"
## [843] "2017-06-29 21:30:13 UTC" "2017-06-29 21:40:13 UTC"
## [845] "2017-06-29 21:50:13 UTC" "2017-06-29 22:00:13 UTC"
## [847] "2017-06-29 22:10:13 UTC" "2017-06-29 22:20:13 UTC"
## [849] "2017-06-29 22:30:13 UTC" "2017-06-29 22:40:13 UTC"
## [851] "2017-06-29 22:50:13 UTC" "2017-06-29 23:00:13 UTC"
## [853] "2017-06-29 23:10:13 UTC" "2017-06-29 23:20:13 UTC"
## [855] "2017-06-29 23:30:13 UTC" "2017-06-29 23:40:13 UTC"
## [857] "2017-06-29 23:50:13 UTC" "2017-06-30 00:00:13 UTC"
## [859] "2017-06-30 00:10:13 UTC" "2017-06-30 00:20:13 UTC"
## [861] "2017-06-30 00:30:13 UTC" "2017-06-30 00:40:13 UTC"
## [863] "2017-06-30 00:50:13 UTC" "2017-06-30 01:00:13 UTC"
## [865] "2017-06-30 01:10:13 UTC" "2017-06-30 01:20:13 UTC"
## [867] "2017-06-30 01:30:13 UTC" "2017-06-30 01:40:13 UTC"
## [869] "2017-06-30 01:50:13 UTC" "2017-06-30 02:00:13 UTC"
## [871] "2017-06-30 02:10:13 UTC" "2017-06-30 02:20:13 UTC"
## [873] "2017-06-30 02:30:13 UTC" "2017-06-30 02:40:13 UTC"
## [875] "2017-06-30 02:50:13 UTC" "2017-06-30 03:00:13 UTC"
## [877] "2017-06-30 03:10:13 UTC" "2017-06-30 03:20:13 UTC"
## [879] "2017-06-30 03:30:13 UTC" "2017-06-30 03:40:13 UTC"
## [881] "2017-06-30 03:50:13 UTC" "2017-06-30 04:00:13 UTC"
## [883] "2017-06-30 04:10:13 UTC" "2017-06-30 04:20:13 UTC"
## [885] "2017-06-30 04:30:13 UTC" "2017-06-30 04:40:13 UTC"
## [887] "2017-06-30 04:50:13 UTC" "2017-06-30 05:00:13 UTC"
## [889] "2017-06-30 05:10:13 UTC" "2017-06-30 05:20:13 UTC"
## [891] "2017-06-30 05:30:13 UTC" "2017-06-30 05:40:13 UTC"
## [893] "2017-06-30 05:50:13 UTC" "2017-06-30 06:00:13 UTC"
## [895] "2017-06-30 06:10:13 UTC" "2017-06-30 06:20:13 UTC"
## [897] "2017-06-30 06:30:13 UTC" "2017-06-30 06:40:13 UTC"
## [899] "2017-06-30 06:50:13 UTC" "2017-06-30 07:00:13 UTC"
## [901] "2017-06-30 07:10:13 UTC" "2017-06-30 07:20:13 UTC"
## [903] "2017-06-30 07:30:13 UTC" "2017-06-30 07:40:13 UTC"
## [905] "2017-06-30 07:50:13 UTC" "2017-06-30 08:00:13 UTC"
## [907] "2017-06-30 08:10:13 UTC" "2017-06-30 08:20:13 UTC"
## [909] "2017-06-30 08:30:13 UTC" "2017-06-30 08:40:13 UTC"
## [911] "2017-06-30 08:50:13 UTC" "2017-06-30 09:00:13 UTC"
## [913] "2017-06-30 09:10:13 UTC" "2017-06-30 09:20:13 UTC"
## [915] "2017-06-30 09:30:13 UTC" "2017-06-30 09:40:13 UTC"
## [917] "2017-06-30 09:50:13 UTC" "2017-06-30 10:00:13 UTC"
## [919] "2017-06-30 10:10:13 UTC" "2017-06-30 10:20:13 UTC"
## [921] "2017-06-30 10:30:13 UTC" "2017-06-30 10:40:13 UTC"
## [923] "2017-06-30 10:50:13 UTC" "2017-06-30 11:00:13 UTC"
## [925] "2017-06-30 11:10:13 UTC" "2017-06-30 11:20:13 UTC"
## [927] "2017-06-30 11:30:13 UTC" "2017-06-30 11:40:13 UTC"
## [929] "2017-06-30 11:50:13 UTC" "2017-06-30 12:00:13 UTC"
## [931] "2017-06-30 12:10:13 UTC" "2017-06-30 12:20:13 UTC"
## [933] "2017-06-30 12:30:13 UTC" "2017-06-30 12:40:13 UTC"
## [935] "2017-06-30 12:50:13 UTC" "2017-06-30 13:00:13 UTC"
## [937] "2017-06-30 13:10:13 UTC" "2017-06-30 13:20:13 UTC"
## [939] "2017-06-30 13:30:13 UTC" "2017-06-30 13:40:13 UTC"
## [941] "2017-06-30 13:50:13 UTC" "2017-06-30 14:00:13 UTC"
## [943] "2017-06-30 14:10:13 UTC" "2017-06-30 14:20:13 UTC"
## [945] "2017-06-30 14:30:13 UTC" "2017-06-30 14:40:13 UTC"
## [947] "2017-06-30 14:50:13 UTC" "2017-06-30 15:00:13 UTC"
## [949] "2017-06-30 15:10:13 UTC" "2017-06-30 15:20:13 UTC"
## [951] "2017-06-30 15:30:13 UTC" "2017-06-30 15:40:13 UTC"
## [953] "2017-06-30 15:50:13 UTC" "2017-06-30 16:00:13 UTC"
## [955] "2017-06-30 16:10:13 UTC" "2017-06-30 16:20:13 UTC"
## [957] "2017-06-30 16:30:13 UTC" "2017-06-30 16:40:13 UTC"
## [959] "2017-06-30 16:50:13 UTC" "2017-06-30 17:00:13 UTC"
## [961] "2017-06-30 17:10:13 UTC" "2017-06-30 17:20:13 UTC"
## [963] "2017-06-30 17:30:13 UTC" "2017-06-30 17:40:13 UTC"
## [965] "2017-06-30 17:50:13 UTC" "2017-06-30 18:00:13 UTC"
## [967] "2017-06-30 18:10:13 UTC" "2017-06-30 18:20:13 UTC"
## [969] "2017-06-30 18:30:13 UTC" "2017-06-30 18:40:13 UTC"
## [971] "2017-06-30 18:50:13 UTC" "2017-06-30 19:00:13 UTC"
## [973] "2017-06-30 19:10:13 UTC" "2017-06-30 19:20:13 UTC"
## [975] "2017-06-30 19:30:13 UTC" "2017-06-30 19:40:13 UTC"
## [977] "2017-06-30 19:50:13 UTC" "2017-06-30 20:00:13 UTC"
## [979] "2017-06-30 20:10:13 UTC" "2017-06-30 20:20:13 UTC"
## [981] "2017-06-30 20:30:13 UTC" "2017-06-30 20:40:13 UTC"
## [983] "2017-06-30 20:50:13 UTC" "2017-06-30 21:00:13 UTC"
## [985] "2017-06-30 21:10:13 UTC" "2017-06-30 21:20:13 UTC"
## [987] "2017-06-30 21:30:13 UTC" "2017-06-30 21:40:13 UTC"
## [989] "2017-06-30 21:50:13 UTC" "2017-06-30 22:00:13 UTC"
## [991] "2017-06-30 22:10:13 UTC" "2017-06-30 22:20:13 UTC"
## [993] "2017-06-30 22:30:13 UTC" "2017-06-30 22:40:13 UTC"
## [995] "2017-06-30 22:50:13 UTC" "2017-06-30 23:00:13 UTC"

You can use add_colourscale() to adjust the color scales of the frames

library(moveVis)
library(move)

data("move_data", "basemap_data")
# align movement
m <- align_move(move_data, res = 4, unit = "mins")
#> Temporal resolution of 4 [mins] is used to align trajectories.

# create spatial frames with frames_spatial:
r_list <- basemap_data[[1]]
r_times <- basemap_data[[2]]

frames <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "gradient",
                         fade_raster = TRUE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames[[100]] # take a look at one of the frames

# default blue is boring, let's change the colour scale of all frames
frames <- add_colourscale(frames, type = "gradient", colours = c("orange", "white", "darkgreen"),
                          legend_title = "NDVI")
frames[[100]]

# let's make up some classification data with 10 classes
r_list <- lapply(r_list, function(x){
  y <- raster::setValues(x, round(raster::getValues(x)*10))
  return(y)
})
# turn fade_raster to FALSE, since it makes no sense to temporally interpolate discrete classes
frames <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "discrete",
                         fade_raster = FALSE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames[[100]]

# now, let's assign a colour per class value to frames
colFUN <- colorRampPalette(c("orange", "lightgreen", "darkgreen"))
cols <- colFUN(10)
frames <- add_colourscale(frames, type = "discrete", colours = cols, legend_title = "Classes")
frames[[100]]

You can use join_frames() to join two or more frames of equal length into a single plot per frame

library(moveVis)
library(move)

data("move_data", "basemap_data")
# align movement
m <- align_move(move_data, res = 4, unit = "mins")

# create spatial frames and graph frames:
r_list <- basemap_data[[1]]
r_times <- basemap_data[[2]]

frames.sp <- frames_spatial(m, r_list = r_list, r_times = r_times, r_type = "gradient",
                            fade_raster = TRUE)
## Checking temporal alignment...
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Assigning raster maps to frames...
## Creating frames...
frames.sp <- add_colourscale(frames.sp, type = "gradient",
                             colours = c("orange", "white", "darkgreen"), legend_title = "NDVI")
frames.flow <- frames_graph(m, r_list, r_times, path_legend = FALSE, graph_type = "flow")
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Creating frames...
frames.hist <- frames_graph(m, r_list, r_times, path_legend = FALSE, graph_type = "hist")
## Processing movement data...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames
## Creating frames...
# check lengths (must be equal)
sapply(list(frames.sp, frames.flow, frames.hist), length)
## [1] 180 180 180
# Let's join the graph frames vertically
frames.join.gr <- join_frames(list(frames.flow, frames.hist), ncol = 1, nrow = 2)
## Joining frames...
frames.join.gr[[100]]

# Now, let's join the joined graph frames with the spatial frames horizontally
# in 2:1 ration and align all axis
frames.join <- join_frames(list(frames.sp, frames.join.gr),
                           ncol = 2, nrow = 1, rel_widths = c(2, 1), axis = "tb")
## Joining frames...
frames.join[[100]]

# in a standard graphics device, this looks a bit unproportional
# however when setting the correct width, height and resolution of a graphic device,
# it will come out well aligend.

# Do so for example with animate_move() with width = 900, dheight = 500 and res = 90
animate_frames(frames.join, out_file = tempfile(fileext = ".gif"), fps = 25, 
               width = 900, height = 500, res = 90, display = TRUE, overwrite = TRUE)
## Rendering animation...
## Approximated animation duration: ≈ 7.2s at 25 fps for 180 frames

Animate the frames

# library(moveVis)
# library(move)
# library(raster)
# library(tidyverse)
# library(ggplot2)
# library(here)
# library(tidytuesdayR)
# library(lubridate)
# library(janitor)
# library(dplyr)
# library(kableExtra)
# library(maps)
# library(mapdata)
# library(mapproj)
# animate_frames(
#   frames = frames, # frames to animate
#   width = 700, # width to scale frames
#   height = 500, # height to scale frames
#   res = 80, # resolution to display frames
#   out_file = here("Mac", "output", "catplot.gif"), # where to save completed .gif
#   overwrite = TRUE # If TRUE, you can overwrite the file with the same name
#   )

You can choose to animate a subset of the generated frames

# animate_frames(
#   frames = frames[1:10], # choose interval of frames to animate
#   out_file = here("Mac", "output", "catplot_10_frames.gif"),
#   overwrite = TRUE,
#   width = 700,
#   height = 500,
#   res = 80
#   )